Herokuで外部プログラムや自作プログラムを実行できればもう何でもできる()のでそれをやってみて何故か手こずったので最終的に成功したやり方を書いておく。node.jsでOSコマンドを実行するには
child_processというモジュールを使う。今回の場合はchild_processの中の
execFileという関数を使うとうまく行った。他の関数は
公式リファレンスで見ることができる。あとはこれを使ってインストールされている(PATHの通っている)OSのコマンドは以下のように実行することができる。
const { execFile } = require('child_process');
const child = execFile('node', ['--version'], (error, stdout, stderr) => {
if (error) {
throw error;
}
console.log(stdout);
});
躓いたというのは自作プログラム(今回はCでHello worldを作ってその実行ファイルa.outをindex.jsと同ディレクトリに置いておいた)の実行。これはフルパスで指定する必要があるらしい。Herokuの場合はファイルは/app/上に置かれるのでコマンド"/app/a.out"を実行すると無事「Hello world」がブラウザ上に表示された。これで何でもできるね!